package com.mask.im.business.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import com.mask.im.business.model.entity.chat.Friendships;
import com.mask.im.business.model.dto.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;


@Mapper
@Repository
public interface FriendshipsMapper extends BaseMapper<Friendships> {
	List<FriendshipsDTO> getFromFriendships(Long userId);

	FriendChatMessageDTO getChatMessageDTO(@Param("id") Long id,
										   @Param("userId") Long userId,
										   @Param("toUserId") Long toUserId);

	List<FriendshipsDTO> remoteFriendships(@Param("myselfId") Long myselfId,
	                                       @Param("keyword") String keyword);

	List<FriendshipsDTO> allFriendRequest(@Param("userId") Long userId,
	                                      @Param("limit") long limit,
	                                      @Param("size") long size);

	FriendshipsDTO getFriendships(@Param("myUserInfoId") Long myUserInfoId,
	                              @Param("otherUserInfoId") Long otherUserInfoId);

	FriendDetailDTO getFriendById(@Param("userId") Long userId,
	                              @Param("friendId") Long friendId);

	List<FriendsBlacklistDTO> getBlacklistFriend(@Param("oneUserId") Long oneUserId,
	                                             @Param("page") long currentPage,
	                                             @Param("size") long size,
	                                             @Param("remark") String remark);


	void updateUnreadCount(@Param("userId") Long userId, @Param("friendId") Long friendId);

	List<LazyGetFriendDTO> lazyGetFriend(@Param("userInfoId") Long userInfoId,
	                                     @Param("groupId") Long groupId);

	SidewaysStatusDTO getSidewaysStatus(@Param("userInfoId") Long userInfoId,
	                                    @Param("friendId") Long friendId);

	List<GroupChatShowDTO> buildGroupChatShow(@Param("userInfoId") Long userInfoId,
	                                          @Param("keyword") String keyword);

	List<PersonalDTO> getRecommendFriends(
			@Param("keyword") String keyword,
			@Param("userInfoId") Long userInfoId,
			@Param("myId") Long myId);
}

